package com.ship.dispatch.bean;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ship.common.core.base.Joinable;
import com.ship.common.core.mapping.Label;
import com.ship.common.core.mapping.SearchItem;
import com.ship.common.core.mapping.TableColumn;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@TableName("sp_dispatch_optimize_scheme_detail")
@Data
public class SpDispatchOptimizeSchemeDetail extends BaseBean implements Joinable {
    /**
     * 方案ID
     */
    @Label(value = "方案ID")
    private Long schemeId;

    /**
     * 方案编号
     */
    @Label(value = "方案编号")
    @SearchItem
    @TableColumn
    private Integer schemeNumber;

    /**
     * 航次号
     */
    @Label(value = "航次号")
    @SearchItem
    @TableColumn
    private String voyageNo;

    /**
     * 货号
     */
    @Label(value = "货号")
    @SearchItem
    @TableColumn
    private String goodsNum;

    /**
     * 资源合同ID
     */
    @Label(value = "资源合同ID")
    private Long resourceContract;

    /**
     * 资源合同名称
     */
    @Label(value = "资源合同名称")
    @SearchItem
    @TableColumn
    private String contractName;

    /**
     * 资源方（资源合同中的卖方）
     */
    @Label(value = "资源方")
    @SearchItem
    @TableColumn
    private String seller;

    /**
     * 贸易类型(资源合同中的贸易类型）
     */
    @Label(value="贸易类型",enumContent = "贸易类型",multiSelect = true)
    @SearchItem
    @TableColumn
    private Integer tradeType;

    /**
     * 贸易主体
     */
    @Label(value="贸易主体",enumContent = "贸易主体",multiSelect = true)
    @SearchItem
    @TableColumn
    private Integer tradeBody;

    /**
     * 预计装载时间
     */
    @Label(value = "预计装载时间")
    @SearchItem
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expectedLoadingDate;

    /**
     * 预计装载完成窗口
     */
    @Label(value = "预计装载完成窗口")
    @SearchItem
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expectedLoadingCompletionWindow;

    /**
     * 预计装载港
     */
    @Label(value = "预计装载港")
    @SearchItem
    @TableColumn
    private String expectedLoadingPort;

    /**
     * 船名
     */
    @Label(value = "船名")
    @SearchItem
    @TableColumn
    private String shipName;

    /**
     * IMO
     */
    @Label(value = "IMO")
    @SearchItem
    @TableColumn
    private String imo;

    /**
     * 巴拿马运河预定时间
     */
    @Label(value = "巴拿马运河预定时间")
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date panamaCanalReservationDate;

    /**
     * 换港时间1
     */
    @Label(value = "换港时间1")
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date portChangeDateOne;

    /**
     * 换港时间2
     */
    @Label(value = "换港时间2")
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date portChangeDateTwo;

    /**
     * 换船时间1
     */
    @Label(value = "换船时间1")
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shipChangeDateOne;

    /**
     * 换船时间2
     */
    @Label(value = "换船时间2")
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shipChangeDateTwo;

    /**
     * 合同装载量
     */
    @Label(value = "合同装载量")
    @SearchItem
    @TableColumn
    private BigDecimal loadingCapacity;

    /**
     * 预计卸载港
     */
    @Label(value = "预计卸载港")
    @SearchItem
    @TableColumn
    private String expectedUnloadingPort;

    /**
     * 预计卸载窗口
     */
    @Label(value = "预计卸载窗口")
    @SearchItem
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expectedUnloadingWindow;

    /**
     * 印度预计卸载窗口
     */
    @Label(value = "印度预计卸载窗口")
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date indiaUnloadTime;

    /**
     * 欧洲预计卸载窗口
     */
    @Label(value = "欧洲预计卸载窗口")
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date europeUnloadTime;

    /**
     * 预计满载航程天数
     */
    @Label(value = "预计满载航程天数")
    @SearchItem
    @TableColumn
    private Integer expectedFullLoadVoyageDays;

    /**
     * 预计卸载完成窗口
     */
    @Label(value = "预计卸载完成窗口")
    @SearchItem
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expectedUnloadingCompletionWindow;

    /**
     * 预计空载航程天数
     */
    @Label(value = "预计空载航程天数")
    @SearchItem
    @TableColumn
    private Integer expectedEmptyLoadVoyageDays;

    /**
     * 预计空载返程窗口
     */
    @Label(value = "预计空载返程窗口")
    @SearchItem
    @TableColumn
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expectedEmptyReturnWindow;

    /**
     * 船速（节）
     */
    private BigDecimal shipSpeed;

    /**
     * 货量单位
     */
    @Label(value = "货量单位",enumContent = "装卸载量单位",multiSelect = true)
    private Integer quantityUnit;

    /**
     * 单个船装载货量
     */
    private BigDecimal singleGoodsQuantity;

    /**
     * 计划id
     */
    @Label(value = "计划id")
    private Long planId;

    /**
     * 油耗
     */
    private BigDecimal oilConsumption;

    /**
     * 航线
     */
    private String shipRoute;

    /**
     * 航运合同名称
     */
    private String shipContractName;

    /**
     * 航运合同贸易主体(国贸、新贸)
     */
    private Integer shipTradeBody;
    /**
     * 船运合同id
     */
    private Long shipContractId;

    /**
     * 船运合同类型（租入长期船、租入短期船、船舶租出、内部转租）
     */
    @Label(value="合同类型",enumContent = "船运合同类型",multiSelect = true)
    private Integer shipContractType;

    /**
     * 审批，1：未审批，2：已审批
     */
    private Integer schemeApprove;

    /**
     * 买方
     */
    private String buyer;

    /**
     * 印度空载航程天数
     */
    private Integer indiaEmptyLoadDays;

    /**
     * 欧洲空载航程天数
     */
    private Integer europeEmptyLoadDays;

    @Override
    public String getLabel() {
        return null;
    }

    @Override
    public String getValue() {
        return null;
    }
}
